﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Veracruz.Economy
{
  /// <summary>
  /// Simplifies the management of a character way to earn monney
  /// </summary>
  interface IEarning
  {
    /// <summary>
    /// The salary monthly earned by the worker for his Job
    /// </summary>
    /// <remarks>The salary is always a value in between the upper and lower boundary of the ActivityInfo wages</remarks>
    IJob Salary { get; set; }

    /// <summary>
    /// Explains the motivation of the earning
    /// </summary>
    string Description {get; set;}

    /// <summary>
    /// The Account which loose the amount
    /// </summary>
    IAccount Source { get; set; }

    /// <summary>
    /// The Account which receive the amount
    /// </summary>
    IAccount Destination { get; set; }

    /// <summary>
    /// Kind of the transaction
    /// </summary>
    AccountKind Kind { get; set; }
    
    /// <summary>
    /// the value
    /// </summary>
    long Amount { get; set; }
    
    /// <summary>
    /// the tick of the transfer
    /// </summary>
    TimeSpan Frequency { get; set; }

    /// <summary>
    /// The beginning date of the earning
    /// </summary>
    DateTime StartDate { get; set; }

    /// <summary>
    /// Date after wich tranfert to account will end.
    /// </summary>
    Nullable<DateTime> EndDate { get; set; }    
  }
}
